/** 工具集 */

/**
 * 获取标题提示词。
 * 注：该方法目前为摸索阶段，使用后生成的标题可能会存在不准确
 *
 * @param messages 消息体内容
 * @returns
 */
export const geneTitlePrompt = (messages: LLMMessage[]): string => {
  return `请为以下内容生成一个陈述式简单总结的标题, 字数在10个字以内, 不要包含任何思考过程或中间步骤, 也不要包含主语或标点符号: \n\n${messages
    .map((m) => {
      return `${m.role}: ${clearContent(m.content)}`
    })
    .join('\n')}`
}

/**
 * 清理文本中的标签内容
 *
 * @param content 内容文本
 * @returns
 */
export const clearContent = (content: string): string => {
  // 移除所有HTML标签及其内容
  content = content.replace(/<[^>]*>.*?<\/[^>]*>/gs, '')
  // 再移除单独的HTML标签
  return content.replace(/<[^>]*>/g, '')
}

/**
 * 获取base64字符串文本部分内容
 *
 * @param dataUri 完整字符串
 * @returns
 */
/**
 * 获取base64字符串文本部分内容
 *
 * @param dataUri 完整字符串
 * @param isImage 是否要求为图片类型
 * @returns
 */
export const extractBase64Data = (dataUri: string, isImage: boolean): string => {
  const parts = dataUri.split(',')
  if (parts.length > 1) {
    if (isImage) {
      // 检查前缀是否为图片类型
      const prefix = parts[0]
      if (!/^data:image\//i.test(prefix)) {
        return ''
      }
    }
    return parts[1]
  }
  return ''
}
